package com.hysoft.util;

import javax.swing.filechooser.FileSystemView;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;


/**
 *
 */
public class LogUtil {
    /**
     * 网络异常时的信息
     * @param info
     * @param logFile
     * @throws IOException
     */

    public static void netErrorInfo(String info,String logFile)throws IOException{
        FileSystemView fsv = FileSystemView.getFileSystemView();
        File com=fsv.getHomeDirectory();
        System.out.println(com.getPath());
        File dir = null;
        dir = new File(com.getPath()+"\\log");
        if (!dir.exists()){
            dir.mkdirs();
        }
        File file = null;
        file = new File(com.getPath()+"\\log\\"+logFile);

        if (!file.exists()){
            file.createNewFile();
        }

        FileWriter fileWriter = null;

        fileWriter = new FileWriter(file,true);

        fileWriter.write(info+"\r\n");

        if (fileWriter != null)fileWriter.close();
    }

    /**
     * 信息写入文件
     * @param type In导入 Out导出
     * @param info 信息
     * @param logFile 日志文件
     * @throws IOException
     */
    public static void inserCorrectLog(String type,String info,String logFile) throws IOException {
        /**
         * FileSystemView 是 JFileChooser 的文件系统网关。由于 JDK1.1 File API
         * 不允许对诸如根分区、文件类型信息或隐藏文件位之类的信息进行访问，此类被设计成能
         * 够直接获得尽可能多的特定于 OS 的文件系统信息。
         */
        //FileSystemVies是抽象类，无法实例化，用getFileSystemView获得一个实例
        FileSystemView fsv = FileSystemView.getFileSystemView();

        //getHomeDirectory获得desktop
        //getDefaultDirectory将获取document目录
        File com=fsv.getHomeDirectory();

        System.out.println(com.getPath());

        File dir = null;
        dir = new File(com.getPath()+"\\log\\导出");
        if (!dir.exists()){
            dir.mkdirs();
        }
        dir = new File(com.getPath()+"\\log\\导入");
        if (!dir.exists()){
            dir.mkdirs();
        }
        //com.getPath()获取的路径为：C:\Users\shandan\Desktop，需要自己缀上'\'
        File file = null;
        if (type.equalsIgnoreCase("In")||type == "In"){
            file = new File(com.getPath()+"\\log\\导入\\"+logFile);
        }else if (type.equalsIgnoreCase("Out")||type == "Out"){
            file = new File(com.getPath()+"\\log\\导出\\"+logFile);
        }


        if (!file.exists()){
            file.createNewFile();
        }

        FileWriter fileWriter = null;

        fileWriter = new FileWriter(file,true);

        fileWriter.write(info+"\r\n");

        if (fileWriter != null)fileWriter.close();
    }


    /**
     * 获取当前的系统时间
     * 输出的样例 2019-09-23 星期一 11:34:54 上午
     * @return
     */
    public static String getCurrentTime(){

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd EEE HH:mm:ss aa");//设置日期格式

        String currentTime = df.format(new Date());// new Date()为获取当前系统时间

        String title = "============================================================\n";
        return title+currentTime+"\n";
    }

    /**
     * 录井公司和access数据库位置
     * @param section 录井公司
     * @param path access位置
     * @return
     */
    public static String getSectionAndAccessPath(String section,String path){
        return "【单位名称】"+section+"【路径】"+path+"\n";
    }

    /**
     * oracle数据库信息
     * @param dbName
     * @return
     */
    public static String getOracleDBInfo(String dbName,String ip,String port,String SID,String username){
        return "【数据库】"+dbName+"\n"
                +"【主机】"+ip+"\n"
                +"【端口】"+port+"\n"
                +"【服务名】"+SID+"\n"
                +"【用户空间】"+username+"\n";
    }

    /**
     * access数据库信息
     * @param dbName
     * @param path
     * @return
     */
    public static String getAccessDBInfo(String dbName,String path){
        return "【数据库】"+dbName+"\n"+"【路径】"+path;
    }

    /**
     * 条件导出，出错信息
     * @param tableName 表名
     * @param condition 条件
     * @return
     */
    public static String conditionExport(String tableName, String condition){
        return "【信息】对源表"+tableName+"进行过滤条件为："+condition+"的操作出错，条件有误导出0条数据！请重置条件！";

    }

    /**
     * 在往目标表写入数据库时，导入成功的字段和相应的值
     * @param db 数据库
     * @return
     */
    public static String InfoWithSuccess(String db,String tableName,String fields,String values){
        return "【信息】目标库"+db+"表【"+tableName+"】操作时：列("+fields+")数据("+values+")操作成功";
    }

    /**
     * 在往目标表写入数据时，某些字段的某些值产生了错误
     * @param tableName
     * @param fields
     * @return
     */
    public static String InfoWithError(String db,String tableName,String fields,String values){
        return "【信息】目标库"+db+"表【"+tableName+"】操作时：列("+fields+")数据("+values+")出错";
    }

    /**
     * 统计写入操作结束后，源表中总共有多少数据，实际成功导入了多少条数据
     * @param tableName
     * @param total 表中的实际条目（预计导入多少）
     * @param isSucees 实际导入多少
     * @return
     */
    public static String InfoWithTotal(String tableName,String total,String isSucees){
        return "【数据表】"+tableName+"总共有记录："+total+"条，成功写入："+isSucees+"条";
    }

    /**
     * 当两个表中转移数据时，目标表中某个字段不存在，整张表跳过，将不导入
     * @param db
     * @param tableName
     * @param fields
     * @return
     */
    public static String InfoWithDiffFields(String db,String tableName,String fields){
        return "【信息】目标库"+db+"表【"+tableName+"】操作时：列("+fields+")不一致，表【"+tableName+"】不导入！";
    }

    public static String InfoWithRename(String oldPath,String newPath){
        return "【信息】"+oldPath+"文件导入失败!已改名"+newPath;
    }

}
